package com.maple.admin.controller;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.maple.admin.common.util.AjaxJson;
import com.maple.admin.domain.dto.LoginBody;
import com.maple.admin.domain.entity.SysUser;
import com.maple.admin.service.SysUserService;
import io.swagger.annotations.Api;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * 用户管理
 *
 * @author SouthMaple
 * @since 2021-04-24 21:23:34
 */
@RestController
@RequestMapping("/user")
@Api(value = "user", tags = "用户管理模块")
public class SysUserController {
    @Resource
    private SysUserService userService;

    /**
     * admin登录
     *
     * @param loginBody 登录信息
     * @return 登录状态
     */
    @PostMapping("/login")
    public AjaxJson login(@RequestBody LoginBody loginBody) {
        String username = loginBody.getUsername();
        String password = loginBody.getPassword();
        // 判断用户名称和密码的合法性
        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
            return AjaxJson.getError("账号或密码不能为空!");
        }
        return userService.login(username, password);
    }

    /**
     * 根据token获取用户信息
     *
     * @param token 令牌
     * @return 用户信息
     */
    @GetMapping("/info")
    public AjaxJson getInfo(String token) {
        if (StringUtils.isEmpty(token)) {
            return AjaxJson.getError("token无效!");
        }
        return userService.getInfo(token);
    }

    /**
     * 退出登录
     *
     * @return 登出
     */
    @PostMapping("/logout")
    public AjaxJson logout() {
        return userService.logout();
    }

    /**
     * 分页查询所有数据
     *
     * @param page 分页对象
     * @param user 查询实体
     * @return 所有数据
     */
    @GetMapping
    public AjaxJson selectAll(Page<SysUser> page, SysUser user) {
        return AjaxJson.getSuccessData(userService.page(page, Wrappers.query(user)));
    }

    // /**
    //  * 通过主键查询单条数据
    //  *
    //  * @param id 主键
    //  * @return 单条数据
    //  */
    // @GetMapping("/{id}")
    // public R selectOne(@PathVariable Serializable id) {
    //     return success(this.userService.getById(id));
    // }
    //
    // /**
    //  * 新增数据
    //  *
    //  * @param sysUser 实体对象
    //  * @return 新增结果
    //  */
    // @PostMapping
    // public R insert(@RequestBody SysUser sysUser) {
    //     return success(this.userService.save(sysUser));
    // }
    //
    // /**
    //  * 修改数据
    //  *
    //  * @param sysUser 实体对象
    //  * @return 修改结果
    //  */
    // @PutMapping
    // public R update(@RequestBody SysUser sysUser) {
    //     return success(this.userService.updateById(sysUser));
    // }
    //
    // /**
    //  * 删除数据
    //  *
    //  * @param idList 主键结合
    //  * @return 删除结果
    //  */
    // @DeleteMapping
    // public R delete(@RequestParam("idList") List<Long> idList) {
    //     return success(this.userService.removeByIds(idList));
    // }
}

